home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 003 / dbsteel1.arc / CREAL.BAS < prev    next >
BASIC Source File  |  1979-12-31  |  18KB  |  576 lines

  1. 4 DEFINT A-W,Y-Z
  2. 5 DIM F$(15),FLDN$(17,40),FTY(17,40),FL(17,40) 
  3. 13 DIM L(17),NREC(17)
  4. 16 DIM KY(17,40),KEYLIST(17,40)
  5. 35 DIM K$(80)
  6. 40 DIM IDEXA(30),IDEXB(30),IDEXC(30),MFLG(30)
  7. 50 DIM MIND#(30),MAXD#(30)
  8. 60 DIM REALFLG(30)
  9. 70 CH = 29
  10. 75 PRINT FRE(0)
  11. 80 GOSUB 52000
  12. 100 GOSUB 50000
  13. 150 GOSUB 24000
  14. 200 GOTO 40000
  15. 500 REM ******* CLS
  16. 510 CLS 
  17. 520 RETURN
  18. 20000 REM ****** SHOW REALTIME DATA ON SCREEN
  19. 20100 GOSUB 500
  20. 20110 PRINT "TRANSFER DATA TO FILE : ";F$(TFILE)
  21. 20120 IF TGTRN = 0 THEN PRINT " TARGET RECORD NUMBER ALWAYS EQUALS ONE "
  22. 20130 IF TGTRN > 0 THEN PRINT "TARGET RECORD NUMBER = VALUE OF THIS FIELD : ";FLDN$(A,TGTRN)
  23. 20140 PRINT "TRANSFER THIS FIELD : ";FLDN$(A,FLD1)
  24. 20150 PRINT "TO THIS FIELD IN TARGET FILE : ";FLDN$(TFILE,TFLD1)
  25. 20160 IF ADSUB1 = 1 THEN PRINT "ADD" ELSE PRINT "SUBTRACT"
  26. 20170 IF TFLD2 = 0 THEN 20400
  27. 20180 PRINT "SECOND TRANSFER TO THIS FIELD : ";FLDN$(TFILE,TFLD2)
  28. 20190 IF ADSUB2 = 1 THEN PRINT "ADD" ELSE PRINT "SUBTRACT"
  29. 20400 REM
  30. 20500 IF FLD2 = 0 THEN 20700
  31. 20510 PRINT ""
  32. 20520 PRINT "****  SECOND SOURCE FILE TRANSFER  ****"
  33. 20640 PRINT "TRANSFER THIS FIELD : ";FLDN$(A,FLD2)
  34. 20650 PRINT "TO THIS FIELD IN TARGET FILE : ";FLDN$(TFILE,TFLD3)
  35. 20660 IF ADSUB3 = 1 THEN PRINT "ADD" ELSE PRINT "SUBTRACT"
  36. 20670 IF TFLD3 = 0 THEN 20700
  37. 20680 PRINT "SECOND TRANSFER TO THIS FIELD : ";FLDN$(TFILE,TFLD4)
  38. 20690 IF ADSUB4 = 1 THEN PRINT "ADD" ELSE PRINT "SUBTRACT"
  39. 20700 PRINT "*******  PRESS ANY KEY TO CONTINUE  ********"
  40. 20750 IF INKEY$ = "" THEN 20750
  41. 20800 RETURN
  42. 21000 REM ****** SHOW REALTIME DATA ON SCREEN
  43. 21100 GOSUB 500
  44. 21110 LPRINT "TRANSFER DATA TO FILE : ";F$(TFILE)
  45. 21120 IF TGTRN = 0 THEN LPRINT " TARGET RECORD NUMBER ALWAYS EQUALS ONE "
  46. 21130 IF TGTRN > 0 THEN LPRINT "TARGET RECORD NUMBER = VALUE OF THIS FIELD ";FLDN$(A,TGTRN)
  47. 21140 LPRINT "TRANSFER THIS FIELD : ";FLDN$(A,FLD1)
  48. 21150 LPRINT "TO THIS FIELD IN TARGET FILE : ";FLDN$(TFILE,TFLD1)
  49. 21160 IF ADSUB1 = 1 THEN LPRINT "ADD" ELSE LPRINT "SUBTRACT"
  50. 21170 IF TFLD2 = 0 THEN 20400
  51. 21180 LPRINT "SECOND TRANSFER TO THIS FIELD : ";FLDN$(TFILE,TFLD2)
  52. 21190 IF ADSUB2 = 1 THEN LPRINT "ADD" ELSE LPRINT "SUBTRACT"
  53. 21400 REM
  54. 21500 IF FLD2 = 0 THEN 20700
  55. 21510 LPRINT ""
  56. 21520 LPRINT "****  SECOND SOURCE FILE TRANSFER  ****"
  57. 21640 LPRINT "TRANSFER THIS FIELD : ";FLDN$(A,FLD2)
  58. 21650 LPRINT "TO THIS FIELD IN TARGET FILE : ";FLDN$(TFILE,TFLD3)
  59. 21660 IF ADSUB3 = 1 THEN LPRINT "ADD" ELSE LPRINT "SUBTRACT"
  60. 21670 IF TFLD3 = 0 THEN 20700
  61. 21680 LPRINT "SECOND TRANSFER TO THIS FIELD : ";FLDN$(TFILE,TFLD4)
  62. 21690 IF ADSUB4 = 1 THEN LPRINT "ADD" ELSE LPRINT "SUBTRACT"
  63. 21700 PRINT "*******  PRESS ANY KEY TO CONTINUE  ********"
  64. 21800 RETURN
  65. 23780 REM *************  READ SUBROUTINE  *************
  66. 23800 OPEN "I",#1,"FFILE"
  67. 23820 INPUT #1,MAXF
  68. 23840 FOR A = 1 TO MAXF
  69. 23860 INPUT #1,A,F$(A),NREC(A),L(A)
  70. 23880 FOR N = 1 TO NREC(A)
  71. 23900 INPUT #1,FLDN$(A,N),FTY(A,N),FL(A,N)
  72. 23920 IF FTY(A,N) = 2 THEN INPUT #1,KY(A,N),KEYLIST(A,N)
  73. 23940 NEXT N
  74. 23960 NEXT A
  75. 23980 CLOSE #1
  76. 23990 RETURN
  77. 24000 REM **********  READ IDEX SUBROUTINE
  78. 24100 OPEN "I",#1,"REALTIME"
  79. 24110 FOR T = 1 TO MAXF
  80. 24120 INPUT #1,REALFLG(T)
  81. 24130 NEXT T
  82. 24140 CLOSE #1
  83. 24150 RETURN
  84. 25000 REM **********  WRITE IDEX SUBROUTINE
  85. 25100 OPEN "O",#1,"REALTIME"
  86. 25110 FOR T = 1 TO 30
  87. 25120 WRITE #1,REALFLG(T)
  88. 25130 NEXT T
  89. 25140 CLOSE #1
  90. 25150 RETURN
  91. 25400 REM
  92. 26000 REM *********** READ MAX MIN DATA
  93. 26100 A$ = STR$(A)
  94. 26110 A$ = MID$(A$,2)
  95. 26120 A$ = "REAL" + A$
  96. 26200 OPEN "I",#1,A$
  97. 26220 INPUT #1,TFILE,FLD1,FLD2,TFLD1,TFLD2,TFLD3,TFLD4,ADSUB1,ADSUB2,ADSUB3,ADSUB4,TGTRN
  98. 26240 CLOSE #1
  99. 26250 RETURN
  100. 27000 REM *********** WRITEMAX MIN DATA
  101. 27100 A$ = STR$(A)
  102. 27110 A$ = MID$(A$,2)
  103. 27120 A$ = "REAL" + A$
  104. 27200 OPEN "O",#1,A$
  105. 27220 WRITE #1,TFILE,FLD1,FLD2,TFLD1,TFLD2,TFLD3,TFLD4,ADSUB1,ADSUB2,ADSUB3,ADSUB4,TGTRN
  106. 27240 CLOSE #1
  107. 27250 RETURN
  108. 28000 REM **********  READ IDEX SUBROUTINE
  109. 28100 GOSUB 500
  110. 28105 PRINT "FILE        REALTIME TRANSFER"
  111. 28110 FOR T = 1 TO MAXF
  112. 28120 PRINT T;
  113. 28122 IF REALFLG(T) = 2 THEN PRINT TAB(15)"YES" ELSE PRINT TAB(15)"NO"
  114. 28130 NEXT T
  115. 28150 RETURN
  116. 29000 REM **********  LPRINT IDEX SUBROUTINE
  117. 29100 GOSUB 500
  118. 29105 LPRINT "FILE    REALTIME OPTION "
  119. 29110 FOR T = 1 TO MAXF
  120. 29120 LPRINT T;
  121. 29122 IF REALFLG(T) = 2 THEN LPRINT TAB(15)"YES" ELSE LPRINT TAB(15)"NO"
  122. 29130 NEXT T
  123. 29150 RETURN
  124. 30000 REM ****** INPUT REALTIME DATA
  125. 30100 GOSUB 500
  126. 30110 PRINT "*****  WHAT FILE DO YOU WANT TO TRANSFER THE DATA TO  *****"
  127. 30120 FOR T = 1 TO MAXF
  128. 30130 PRINT T;" - ";F$(T)
  129. 30140 NEXT T
  130. 30150 GOSUB 60000
  131. 30160 IF DT# < 1 OR DT# >MAXF THEN 30150
  132. 30170 TFILE = DT#
  133. 30200 GOSUB 500
  134. 30210 PRINT "*****  WHAT IS THE FIRST FIELD YOU WANT TRANSFERED  *****"
  135. 30220 FOR T = 1 TO NREC(A)
  136. 30230 PRINT T;" - ";FLDN$(A,T)
  137. 30240 NEXT T
  138. 30250 PRINT "*****  WHAT IS THE FIRST FIELD YOU WANT TRANSFERED  *****"
  139. 30260 GOSUB 60000
  140. 30270 IF DT# < 1 OR DT# > NREC(A) THEN 30260
  141. 30275 IF FTY(A,DT#) < 4 THEN 30260
  142. 30280 FLD1 = DT#
  143. 30285 PRINT "*****  WHAT FIELD VALUE IS THE RECORD NUMBER OF THE TARGET FILE  *****"
  144. 30287 PRINT "         enter zero if the target record number is always one "
  145. 30290 GOSUB 60000
  146. 30292 IF DT# < 0 OR DT# > NREC(A) THEN 30290
  147. 30295 TGTRN = DT#
  148. 30300 GOSUB 500
  149. 30310 FOR T = 1 TO NREC(TFILE)
  150. 30320 PRINT T;" - ";FLDN$(TFILE,T)
  151. 30330 NEXT T
  152. 30340 PRINT "***** WHICH FIELD IS THE FIRST FIELD YOU WANT THE DATA TRANSFERED TO  ****"
  153. 30350 GOSUB 60000
  154. 30360 IF DT# < 1 OR DT# > NREC(TFILE) THEN 30350
  155. 30365 IF FTY(TFILE,DT#) < 4 THEN 30350
  156. 30370 TFLD1 = DT#
  157. 30380 PRINT "DO YOU WANT THE DATA TO BE 1-ADDED OR 2-SUBTRACTED FROM THIS FIELD"
  158. 30385 GOSUB 60000
  159. 30390 IF DT# < 1 OR DT# > 2 THEN 30385
  160. 30400 ADSUB1 = DT#
  161. 30420 PRINT "WHICH FIELD IS THE SECOND FIELD YOU WANT TO TRANSFER THE DATA TO  - 0 FOR NONE"
  162. 30430 GOSUB 60000
  163. 30433 IF DT# = 0 THEN TFLD2 = 0
  164. 30435 IF DT# = 0 THEN 31200
  165. 30440 IF DT# < 0 OR DT# > NREC(TFILE) THEN 30430
  166. 30445 IF FTY(TFILE,DT#) < 4 THEN 30430
  167. 30450 TFLD2 = DT#
  168. 30460 PRINT "DO YOU WANT THE DATA 1-ADDED OR 2-SUBTRACTED FROM THIS FIELD "
  169. 30470 GOSUB 60000
  170. 30480 IF DT# < 1 OR DT# > 2 THEN 30470
  171. 30490 ADSUB2 = DT#
  172. 31200 GOSUB 500
  173. 31210 PRINT "*****  WHAT IS THE SECOND FIELD YOU WANT TRANSFERED  *****"
  174. 31220 FOR T = 1 TO NREC(A)
  175. 31230 PRINT T;" - ";FLDN$(A,T)
  176. 31240 NEXT T
  177. 31250 PRINT "*****  WHAT IS THE SECOND FIELD YOU WANT TRANSFERED  *****"
  178. 31255 PRINT "   ENTER ZERO IF YOU DO NOT WANT A SECOND FIELD TRANSFERED "
  179. 31260 GOSUB 60000
  180. 31270 IF DT# < 0 OR DT# > NREC(A) THEN 31260
  181. 31271 IF DT# = 0 THEN FLD2 = 0
  182. 31272 IF DT# = 0 THEN RETURN
  183. 31275 IF FTY(A,DT#) < 4 THEN 31260
  184. 31280 FLD2 = DT#
  185. 31300 GOSUB 500
  186. 31310 FOR T = 1 TO NREC(TFILE)
  187. 31320 PRINT T;" - ";FLDN$(TFILE,T)
  188. 31330 NEXT T
  189. 31340 PRINT "***** WHICH FIELD IS THE FIRST FIELD YOU WANT THE DATA TRANSFERED TO  ****"
  190. 31350 GOSUB 60000
  191. 31360 IF DT# < 1 OR DT# > NREC(TFILE) THEN 31350
  192. 31365 IF FTY(TFILE,DT#) < 4 THEN 31350
  193. 31370 TFLD3 = DT#
  194. 31380 PRINT "DO YOU WANT THE DATA TO BE 1-ADDED OR 2-SUBTRACTED FROM THIS FIELD"
  195. 31385 GOSUB 60000
  196. 31390 IF DT# < 1 OR DT# > 2 THEN 31385
  197. 31400 ADSUB3 = DT#
  198. 31420 PRINT "WHICH FIELD IS THE SECOND FIELD YOU WANT TO TRANSFER THE DATA TO  - 0 FOR NONE"
  199. 31430 GOSUB 60000
  200. 31433 IF DT# = 0 THEN TFLD4 = 0
  201. 31435 IF DT# = 0 THEN RETURN
  202. 31440 IF DT# < 0 OR DT# > NREC(TFILE) THEN 31430
  203. 31445 IF FTY(TFILE,DT#) < 4 THEN 31430
  204. 31450 TFLD4 = DT#
  205. 31460 PRINT "DO YOU WANT THE DATA 1-ADDED OR 2-SUBTRACTED FROM THIS FIELD "
  206. 31470 GOSUB 60000
  207. 31480 IF DT# < 1 OR DT# > 2 THEN 31270
  208. 31490 ADSUB4 = DT#
  209. 31900 RETURN
  210. 40000 REM ****** INITIAL MENU
  211. 40100 GOSUB 500
  212. 40110 PRINT "**********************  INITIAL MENU  ************************"
  213. 40120 PRINT "     0 - EXIT PROGRAM "
  214. 40130 PRINT "     1 - TURN REALTIME OFF OR ON "
  215. 40140 PRINT "     2 - SHOW REALTIME DATA ON SCREEN"
  216. 40150 PRINT "     3 - SHOW  REALTIME  OPTION FOR EACH FILE ON SCREEN"
  217. 40160 PRINT "     4 - PRINT REALTIME DATA ON PAPER"
  218. 40170 PRINT "     5 - PRINT REALTIME OPTION FOR EACH FILE ON PAPER"
  219. 40180 PRINT "     6 - ENTER REALTIME DATA FOR A FILE   "
  220. 40200 PRINT "************  ENTER THE NUMBER THEN PRESS RETURN  ************"
  221. 40210 GOSUB 60000
  222. 40220 IF DT# < 0 OR DT# > 7 THEN 40210
  223. 40230 T = DT#
  224. 40240 IF T = 0 THEN GOTO 51000
  225. 40250 ON T GOTO 41000,42000,43000,44000,45000,46000,47000
  226. 41000 REM ********  TURN REALTIME OPTION ON OR OFF  
  227. 41100 GOSUB 500
  228. 41110 GOSUB 56000
  229. 41180 GOSUB 500
  230. 41500 PRINT "****  DO YOU WANT REALTIME TRANSFER     ****"
  231. 41510 PRINT "          1 - NO "
  232. 41520 PRINT "          2 - YES"
  233. 41530 PRINT "***  ENTER THE NUMBER THEN PRESS RETURN  ***"
  234. 41540 GOSUB 60000
  235. 41550 REALFLG(A) = DT#
  236. 41700 GOSUB 25000
  237. 41710 GOTO 40000
  238. 42000 REM ********  SHOW REALTIME DATA ON SCREEN 
  239. 42040 GOSUB 500
  240. 42050 GOSUB 56000
  241. 42055 IF REALFLG(A) <> 2 THEN 40000
  242. 42060 GOSUB 26000
  243. 42100 GOSUB 500
  244. 42200 GOSUB 20000
  245. 42300 GOTO 40000
  246. 43000 REM ********  SHOW REALTIME DATA ON SCREEN 
  247. 43100 GOSUB 28000
  248. 43150 PRINT "******  PRESS ANY KEY TO CONTINUE  ******"
  249. 43200 IF INKEY$ = "" THEN 43200
  250. 43300 GOTO 40000
  251. 44000 REM ********  PRINT MAXIMUM AND MINIMUMS ON PAPER
  252. 44040 GOSUB 500
  253. 44050 GOSUB 56000
  254. 44055 IF REALFLG(A) <> 2 THEN 40000
  255. 44060 GOSUB 26000
  256. 44100 GOSUB 500
  257. 44200 GOSUB 21000
  258. 44300 GOTO 40000
  259. 45000 REM ********  PRINT INDEX FIELDS AND MAX OPTION ON PAPER
  260. 45100 GOSUB 29000
  261. 45300 GOTO 40000
  262. 46000 REM *******  ENTER REALTIME DATA FOR A FILE
  263. 46100 GOSUB 500
  264. 46110 GOSUB 56000
  265. 46190 GOSUB 30000
  266. 46210 GOSUB 27000
  267. 46300 GOTO 40000
  268. 47000 REM ********  CHANGE THE MAXIMUMS AND MINIMUMS FOR A SINGLE FIELD
  269. 47100 GOSUB 500
  270. 47110 GOSUB 56000
  271. 47115 GOSUB 26000
  272. 47120 GOSUB 500
  273. 47130 PRINT "****  WHAT FIELD DO YOU WANT TO CHANGE THE MAXIMUMS AND MINIMUMS  ****"
  274. 47180 FOR T = 1 TO NREC(A)
  275. 47185 PRINT T;" - ";FLDN$(A,T)
  276. 47200 NEXT T
  277. 47210 PRINT "*****  ENTER THE NUMBER THEN PRESS RETURN  *****"
  278. 47220 GOSUB 60000
  279. 47230 IF DT# < 1 OR DT# > NREC(A) THEN 47220
  280. 47240 T = DT#
  281. 47250 GOSUB 30000
  282. 47810 GOSUB 27000
  283. 47900 GOTO 40000
  284. 50000 REM **********  INTRO
  285. 50010 GOSUB 500
  286. 50100 PRINT "            R E A L T I M E    P R O G R A M    3.0   "
  287. 50105 PRINT ""
  288. 50110 PRINT "      Copyright 1984 by Potomac Pacific Engineering Inc."
  289. 50120 PRINT ""
  290. 50130 PRINT "This program is licensed FREE to all users with some restrictions "
  291. 50165 PRINT "     See the manual for more information on the license."
  292. 50167 PRINT ""
  293. 50920 GOSUB 23780
  294. 50950 PRINT "******************  PRESS ANY KEY TO CONTINUE  *******************";
  295. 50960 IF INKEY$ = "" GOTO 50960
  296. 50970 RETURN
  297. 51000 REM ***** EXIT TO SYSTEM
  298. 51100 GOSUB 500
  299. 51110 CLOSE
  300. 51120 PRINT " -BYE, Have a nice day"
  301. 51130 END
  302. 52000 REM ***** INTRO 1
  303. 52010 GOSUB 500
  304. 52100 PRINT "           Put the DATA DISK in the default disk drive  "
  305. 52110 PRINT ""
  306. 52120 PRINT "          *****  THEN PRESS ANY KEY TO CONTINUE  *****"
  307. 52130 PRINT ""
  308. 52140 PRINT "      The  CUSTOM  programs only use the PROGRAM DATA DISK"
  309. 52150 PRINT "Keep it in the default disk drive at all times during this program."
  310. 52200 IF INKEY$ = "" GOTO 52200
  311. 52210 RETURN
  312. 56000 REM ****  WHAT FILE
  313. 56105 PRINT "***********  WHICH FILE DO YOU WANT  ************"
  314. 56110 FOR T = 1 TO MAXF
  315. 56120 PRINT T;" - ";F$(T)
  316. 56130 NEXT T
  317. 56140 PRINT "******  ENTER THE NUMBER THEN PRESS RETURN  *****"
  318. 56150 GOSUB 60000
  319. 56160 IF DT# < 1 OR DT# > MAXF THEN 56150
  320. 56170 A = DT#
  321. 56200 RETURN
  322. 60000 REM *******  INTEGER LESS THEN 100 CHECK  ********
  323. 60010 MAX = 2
  324. 60020 ACT$ = "1234567890=<>^"
  325. 60030 IF NE = 0 THEN ACT$ = "1234567890"
  326. 60040 PRINT ">__<";
  327. 60050 GOTO 60240
  328. 60060 REM *******  INTEGER *******                        
  329. 60070 MAX = 8
  330. 60080 ACT$ = "1234567890-+,=<>^"
  331. 60090 IF NE = 0 THEN ACT$ = "1234567890-+,"
  332. 60100 PRINT ">________<";
  333. 60110 GOTO 60240
  334. 60120 REM *******  SINGLE PRECISION  *******                        
  335. 60130 MAX = 10
  336. 60140 ACT$ = "1234567890-+,.%$=<>^"
  337. 60150 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  338. 60160 PRINT ">__________<";
  339. 60170 GOTO 60240
  340. 60180 REM *******  DOUBLE PRECISION  *******                        
  341. 60190 MAX = 20
  342. 60200 ACT$ = "1234567890-+,.%$=<>^"
  343. 60210 IF NE = 0 THEN ACT$ = "1234567890+-,.%$"
  344. 60220 PRINT ">____________________<";
  345. 60230 GOTO 60240
  346. 60240 REM ********** NUMBER CHECK **********
  347. 60250 A$ = ""
  348. 60260 K$(20) = " "
  349. 60270 KTMAX = 0
  350. 60280 FOR T9 = 1 TO MAX
  351. 60290 K$(T9) = " "
  352. 60300 NEXT T9
  353. 60310 DIG$ = "1234567890."
  354. 60320 DOTFLG = 0
  355. 60330 T2 = MAX + 1
  356. 60340 FOR T6 = 1 TO T2
  357. 60350 PRINT CHR$(CH);
  358. 60360 NEXT T6
  359. 60370 IF INKEY$ = "" GOTO 60380 ELSE GOTO 60370
  360. 60380 KT = 0
  361. 60390 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  362. 60400 KT = KT + 1
  363. 60410 REM     
  364. 60420 W$ = INKEY$
  365. 60430 IF W$ = "" GOTO 60420
  366. 60440 C = ASC(W$)
  367. 60450 IF C = 0 THEN GOSUB 61900
  368. 60460 IF C = 13 GOTO 60580
  369. 60470 IF C = 17 OR C = 8 GOTO 61150
  370. 60480 IF C = 19 GOTO 60670
  371. 60490 IF C = 4 GOTO 60720
  372. 60500 IF C = 6 GOTO 60780
  373. 60510 IF C = 1 GOTO 60960
  374. 60520 IF KT > MAX GOTO 60410
  375. 60530 IF INSTR(ACT$,W$) = 0 GOTO 61230
  376. 60540 K$(KT) = W$
  377. 60550 PRINT K$(KT);
  378. 60560 IF KT > KTMAX THEN KTMAX = KT
  379. 60570 GOTO 60400
  380. 60580 REM **********  RETURN  **********
  381. 60590 FOR T9 = 1 TO KTMAX
  382. 60600 A$ = A$ + K$(T9)
  383. 60610 NEXT T9
  384. 60620 IF KTMAX = 0 THEN PRINT "1"
  385. 60630 IF KTMAX = 0 THEN DT# = 1
  386. 60640 IF KTMAX = 0 THEN RETURN
  387. 60650 PRINT ""
  388. 60660 GOTO 61260
  389. 60670 REM ********* MOVE CURSE BACK ********
  390. 60680 IF KT = 1 GOTO 60410
  391. 60690 KT = KT - 1
  392. 60700 PRINT CHR$(CH);
  393. 60710 GOTO 60410
  394. 60720 REM ********* MOVE CURSER FORWARD *********
  395. 60730 IF KT >= MAX GOTO 60410
  396. 60740 IF KT > (KTMAX + 1) GOTO 60410
  397. 60750 PRINT K$(KT);
  398. 60760 KT = KT + 1
  399. 60770 GOTO 60410
  400. 60780 REM ********** INSERT ***********
  401. 60790 IF KT > KTMAX GOTO 60410
  402. 60800 X9 = MAX
  403. 60810 WHILE X9 > KT
  404. 60820 X9 = X9 - 1
  405. 60830 K$(X9 + 1) = K$(X9)
  406. 60840 WEND 
  407. 60850 K$(KT) = " "
  408. 60860 KTMAX = KTMAX + 1
  409. 60870 IF KTMAX > MAX THEN KTMAX = MAX
  410. 60880 FOR T9 = KT TO KTMAX
  411. 60890 PRINT K$(T9);
  412. 60900 NEXT T9
  413. 60910 T6 = (KTMAX - KT) + 1
  414. 60920 FOR T7 = 1 TO T6
  415. 60930 PRINT CHR$(CH);
  416. 60940 NEXT T7
  417. 60950 GOTO 60410
  418. 60960 REM ********** DELETE ***********
  419. 60970 IF KT > KTMAX GOTO 60410
  420. 60980 IF KTMAX = 1 GOTO 60410
  421. 60990 K$(MAX + 1) = ""
  422. 61000 X9 = KT 
  423. 61010 WHILE X9 <= MAX
  424. 61020 K$(X9) = K$(X9 + 1)
  425. 61030 X9 = X9 + 1
  426. 61040 WEND 
  427. 61050 KTMAX = KTMAX - 1
  428. 61060 FOR T9 = KT TO KTMAX
  429. 61070 PRINT K$(T9);
  430. 61080 NEXT T9
  431. 61090 PRINT "_";
  432. 61100 T7 = (KTMAX - KT) + 2
  433. 61110 FOR T8 = 1 TO T7
  434. 61120 PRINT CHR$(CH);
  435. 61130 NEXT T8
  436. 61140 GOTO 60410
  437. 61150 REM ********* BACKSPACE ********
  438. 61160 IF KT = 1 GOTO 60410
  439. 61170 KT = KT - 1
  440. 61180 PRINT CHR$(CH);
  441. 61190 K$(KT) = " " 
  442. 61200 PRINT "_";
  443. 61210 PRINT CHR$(CH);
  444. 61220 GOTO 60410
  445. 61230 REM *******  INPUT NOT ACCEPTABLE  ********
  446. 61240 PRINT CHR$(7);
  447. 61250 GOTO 60420
  448. 61260 REM ********* CLEAR STRINGS ********
  449. 61270 MAX = LEN(A$)
  450. 61280 D2$ = ""
  451. 61290 D1$ = ""
  452. 61300 DFLG = 0
  453. 61310 FOR Q93 = 1 TO MAX
  454. 61320 R$ = MID$(A$,Q93,1)
  455. 61330 IF INSTR(DIG$,R$) = 0 GOTO 61400
  456. 61340 IF R$ = "." OR DFLG = 1 GOTO 61380
  457. 61350 IF DFLG = 1 GOTO 61380
  458. 61360 D2$ = D2$ + R$
  459. 61370 GOTO 61400
  460. 61380 D1$ = D1$ + R$
  461. 61390 DFLG = 1
  462. 61400 NEXT Q93
  463. 61410 DA# = VAL(D2$)
  464. 61420 D1# = VAL(D1$)
  465. 61430 DT# = DA# + D1#
  466. 61440 IF K$(1) = "-" THEN DT# =  -DT#   
  467. 61450 RETURN
  468. 61900 REM ****** CHECK FOR ASC0
  469. 61910 S4$ = INKEY$
  470. 61920 C2 =  ASC(S4$)
  471. 61930 IF C2 = 83 THEN C = 1
  472. 61940 IF C2 = 82 THEN C = 6
  473. 61950 IF C2 = 75 THEN C = 19
  474. 61960 IF C2 = 77 THEN C = 4 
  475. 61970 RETURN
  476. 62000 REM **********  ALPHANUMERIC CHECK  **************
  477. 62010 MAX = FL(A,Q)
  478. 62020 GOTO 62040
  479. 62030 REM ********  MAX SET IN PROGRAM  ********
  480. 62040 A$ = ""
  481. 62050 PRINT ">"; 
  482. 62060 FOR N9 = 1 TO MAX
  483. 62070 K$(N9) = ""
  484. 62080 PRINT "_";
  485. 62090 NEXT N9
  486. 62100 PRINT "<";
  487. 62110 T2 = MAX + 1
  488. 62120 FOR T4 = 1 TO T2
  489. 62130 PRINT CHR$(CH);
  490. 62140 NEXT T4
  491. 62150 KT = 0
  492. 62160 KTMAX = 1
  493. 62170 REM ***********  CHECK ALFANUMERIC INPUT FOR LENGTH  ***********
  494. 62180 KT = KT + 1
  495. 62190 PRINT TAB(KT+1)"";
  496. 62200 K$ = INKEY$
  497. 62210 IF K$ = "" GOTO 62200
  498. 62220 C = ASC(K$)
  499. 62230 IF C = 0 THEN GOSUB 61900
  500. 62240 IF C = 13 GOTO 62350
  501. 62250 IF C = 17 OR C = 8 GOTO 62920
  502. 62260 IF C = 19 GOTO 62450
  503. 62270 IF C = 4  GOTO 62500
  504. 62280 IF C = 6 GOTO 62560
  505. 62290 IF C = 1 GOTO 62730
  506. 62300 IF KT > MAX GOTO 62190
  507. 62310 K$(KT) = K$
  508. 62320 PRINT K$(KT);
  509. 62330 IF KT > KTMAX THEN KTMAX = KT
  510. 62340 GOTO 62180
  511. 62350 REM **********  RETURN  **********
  512. 62360 FOR T9 = 1 TO MAX
  513. 62370 A$ = A$ + K$(T9)
  514. 62420 NEXT T9
  515. 62430 PRINT "" 
  516. 62440 RETURN  
  517. 62450 REM ********* MOVE CURSE BACK ********
  518. 62460 IF KT = 1 GOTO 62190
  519. 62470 KT = KT - 1
  520. 62480 PRINT CHR$(CH);
  521. 62490 GOTO 62190
  522. 62500 REM ********* MOVE CURSER FORWARD *********
  523. 62510 IF KT >= MAX GOTO 62190
  524. 62520 IF KT >  KTMAX  GOTO 62190
  525. 62530 PRINT K$(KT);
  526. 62540 KT = KT + 1
  527. 62550 GOTO 62190
  528. 62560 REM ********** INSERT ***********
  529. 62570 X9 = MAX
  530. 62580 WHILE X9 > KT
  531. 62590 X9 = X9 - 1
  532. 62600 K$(X9 + 1) = K$(X9)
  533. 62610 WEND 
  534. 62620 K$(KT) = " "
  535. 62630 KTMAX = KTMAX + 1
  536. 62640 IF KTMAX > MAX THEN KTMAX = MAX
  537. 62650 FOR T9 = KT TO KTMAX
  538. 62660 PRINT K$(T9);
  539. 62670 NEXT T9
  540. 62680 T6 = (KTMAX - KT) +1
  541. 62690 FOR T7 = 1 TO T6
  542. 62700 PRINT CHR$(CH);
  543. 62710 NEXT T7
  544. 62720 GOTO 62190
  545. 62730 REM ********** DELETE ***********
  546. 62740 IF KT > KTMAX GOTO 62200
  547. 62750 IF KTMAX = 1 GOTO 62190
  548. 62760 K$(MAX + 1) = ""
  549. 62770 X9 = KT 
  550. 62780 WHILE X9 <= KTMAX
  551. 62790 K$(X9) = K$(X9 + 1)
  552. 62800 X9 = X9 + 1
  553. 62810 WEND 
  554. 62820 KTMAX = KTMAX - 1
  555. 62830 FOR T9 = KT TO KTMAX
  556. 62840 PRINT K$(T9);
  557. 62850 NEXT T9
  558. 62860 PRINT "_";
  559. 62870 T7 = (KTMAX - KT) + 2
  560. 62880 FOR T6 = 1 TO T7
  561. 62890 PRINT CHR$(CH);
  562. 62900 NEXT T6
  563. 62910 GOTO 62190
  564. 62920 REM ********* BACKSPACE ********
  565. 62930 IF KT = 1 GOTO 62190
  566. 62940 K$(KT) = " "
  567. 62950 KT = KT - 1
  568. 62960 K$(KT) = " "
  569. 62970 PRINT CHR$(CH);
  570. 62980 PRINT "_";
  571. 62990 PRINT CHR$(CH);
  572. 63000 GOTO 62190
  573.  " "
  574. 62950 KT = KT - 1
  575. 62960 K$(KT) = " "
  576. 62